<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Vulkan Memory Allocator: Library initialization</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">Vulkan Memory Allocator
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search',false);
  $(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="doc-content">
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){ initResizable(false); });
/* @license-end */
</script>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle"><div class="title">Library initialization</div></div>
</div><!--header-->
<div class="contents">

<p>API elements related to the initialization and management of the entire library, especially <a class="el" href="struct_vma_allocator.html" title="Represents main object of this library initialized.">VmaAllocator</a> object.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_device_memory_callbacks.html">VmaDeviceMemoryCallbacks</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set of callbacks that the library will call for <code>vkAllocateMemory</code> and <code>vkFreeMemory</code>.  <a href="struct_vma_device_memory_callbacks.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_vulkan_functions.html">VmaVulkanFunctions</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointers to some Vulkan functions - a subset used by the library.  <a href="struct_vma_vulkan_functions.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_allocator_create_info.html">VmaAllocatorCreateInfo</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Description of a Allocator to be created.  <a href="struct_vma_allocator_create_info.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_allocator_info.html">VmaAllocatorInfo</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Information about existing <a class="el" href="struct_vma_allocator.html" title="Represents main object of this library initialized.">VmaAllocator</a> object.  <a href="struct_vma_allocator_info.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents main object of this library initialized.  <a href="struct_vma_allocator.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:gafd73b95e737ee7e76f827cb5472f559f" id="r_gafd73b95e737ee7e76f827cb5472f559f"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="#ga4f87c9100d154a65a4ad495f7763cf7c">VmaAllocatorCreateFlagBits</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gafd73b95e737ee7e76f827cb5472f559f">VmaAllocatorCreateFlagBits</a></td></tr>
<tr class="memdesc:gafd73b95e737ee7e76f827cb5472f559f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags for created <a class="el" href="struct_vma_allocator.html" title="Represents main object of this library initialized.">VmaAllocator</a>.  <br /></td></tr>
<tr class="separator:gafd73b95e737ee7e76f827cb5472f559f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacfe6863e160722c2c1bbcf7573fddc4d" id="r_gacfe6863e160722c2c1bbcf7573fddc4d"><td class="memItemLeft" align="right" valign="top">typedef VkFlags&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gacfe6863e160722c2c1bbcf7573fddc4d">VmaAllocatorCreateFlags</a></td></tr>
<tr class="memdesc:gacfe6863e160722c2c1bbcf7573fddc4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">See <a class="el" href="#ga4f87c9100d154a65a4ad495f7763cf7c" title="Flags for created VmaAllocator.">VmaAllocatorCreateFlagBits</a>.  <br /></td></tr>
<tr class="separator:gacfe6863e160722c2c1bbcf7573fddc4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7e1ed85f7799600b03ad51a77acc21f3" id="r_ga7e1ed85f7799600b03ad51a77acc21f3"><td class="memItemLeft" align="right" valign="top">typedef void(VKAPI_PTR *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga7e1ed85f7799600b03ad51a77acc21f3">PFN_vmaAllocateDeviceMemoryFunction</a>) (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, uint32_t memoryType, VkDeviceMemory memory, VkDeviceSize size, void *pUserData)</td></tr>
<tr class="memdesc:ga7e1ed85f7799600b03ad51a77acc21f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback function called after successful vkAllocateMemory.  <br /></td></tr>
<tr class="separator:ga7e1ed85f7799600b03ad51a77acc21f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga154ccaaf53dc2c36378f80f0c4f3679b" id="r_ga154ccaaf53dc2c36378f80f0c4f3679b"><td class="memItemLeft" align="right" valign="top">typedef void(VKAPI_PTR *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga154ccaaf53dc2c36378f80f0c4f3679b">PFN_vmaFreeDeviceMemoryFunction</a>) (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, uint32_t memoryType, VkDeviceMemory memory, VkDeviceSize size, void *pUserData)</td></tr>
<tr class="memdesc:ga154ccaaf53dc2c36378f80f0c4f3679b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Callback function called before vkFreeMemory.  <br /></td></tr>
<tr class="separator:ga154ccaaf53dc2c36378f80f0c4f3679b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga77692d3c8770ea8882d573206bd27b2b" id="r_ga77692d3c8770ea8882d573206bd27b2b"><td class="memItemLeft" align="right" valign="top">typedef struct VmaDeviceMemoryCallbacks&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga77692d3c8770ea8882d573206bd27b2b">VmaDeviceMemoryCallbacks</a></td></tr>
<tr class="memdesc:ga77692d3c8770ea8882d573206bd27b2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set of callbacks that the library will call for <code>vkAllocateMemory</code> and <code>vkFreeMemory</code>.  <br /></td></tr>
<tr class="separator:ga77692d3c8770ea8882d573206bd27b2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabb0a8e3b5040d847571cca6c7f9a8074" id="r_gabb0a8e3b5040d847571cca6c7f9a8074"><td class="memItemLeft" align="right" valign="top">typedef struct VmaVulkanFunctions&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gabb0a8e3b5040d847571cca6c7f9a8074">VmaVulkanFunctions</a></td></tr>
<tr class="memdesc:gabb0a8e3b5040d847571cca6c7f9a8074"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointers to some Vulkan functions - a subset used by the library.  <br /></td></tr>
<tr class="separator:gabb0a8e3b5040d847571cca6c7f9a8074"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaad9652301d33759b83e52d4f3605a14a" id="r_gaad9652301d33759b83e52d4f3605a14a"><td class="memItemLeft" align="right" valign="top">typedef struct VmaAllocatorCreateInfo&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaad9652301d33759b83e52d4f3605a14a">VmaAllocatorCreateInfo</a></td></tr>
<tr class="memdesc:gaad9652301d33759b83e52d4f3605a14a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Description of a Allocator to be created.  <br /></td></tr>
<tr class="separator:gaad9652301d33759b83e52d4f3605a14a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1988031b0223fdbd564250fa1edd942c" id="r_ga1988031b0223fdbd564250fa1edd942c"><td class="memItemLeft" align="right" valign="top">typedef struct VmaAllocatorInfo&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga1988031b0223fdbd564250fa1edd942c">VmaAllocatorInfo</a></td></tr>
<tr class="memdesc:ga1988031b0223fdbd564250fa1edd942c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Information about existing <a class="el" href="struct_vma_allocator.html" title="Represents main object of this library initialized.">VmaAllocator</a> object.  <br /></td></tr>
<tr class="separator:ga1988031b0223fdbd564250fa1edd942c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga4f87c9100d154a65a4ad495f7763cf7c" id="r_ga4f87c9100d154a65a4ad495f7763cf7c"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga4f87c9100d154a65a4ad495f7763cf7c">VmaAllocatorCreateFlagBits</a> { <br />
&#160;&#160;<a class="el" href="#gga4f87c9100d154a65a4ad495f7763cf7ca4816ddaed324ba110172ca608a20f29d">VMA_ALLOCATOR_CREATE_EXTERNALLY_SYNCHRONIZED_BIT</a> = 0x00000001
, <a class="el" href="#gga4f87c9100d154a65a4ad495f7763cf7cace7da7cc6e71a625dfa763c55a597878">VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT</a> = 0x00000002
, <a class="el" href="#gga4f87c9100d154a65a4ad495f7763cf7ca8fb75bf07cd184ab903596295e863dee">VMA_ALLOCATOR_CREATE_KHR_BIND_MEMORY2_BIT</a> = 0x00000004
, <a class="el" href="#gga4f87c9100d154a65a4ad495f7763cf7ca4d4687863f7bd4b418c6006dc04400b0">VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT</a> = 0x00000008
, <br />
&#160;&#160;<a class="el" href="#gga4f87c9100d154a65a4ad495f7763cf7ca2acce4886d8078552efa38878413970f">VMA_ALLOCATOR_CREATE_AMD_DEVICE_COHERENT_MEMORY_BIT</a> = 0x00000010
, <a class="el" href="#gga4f87c9100d154a65a4ad495f7763cf7ca5f1b28b0414319d1687e1f2b30ab0089">VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT</a> = 0x00000020
, <a class="el" href="#gga4f87c9100d154a65a4ad495f7763cf7caffdd7a5169be3dbd7cbf6b3619e4f78a">VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT</a> = 0x00000040
, <a class="el" href="#gga4f87c9100d154a65a4ad495f7763cf7caa2566e7f75e19ae7ec9c4fa509fea5fb">VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE4_BIT</a> = 0x00000080
, <br />
&#160;&#160;<a class="el" href="#gga4f87c9100d154a65a4ad495f7763cf7caca82d4ce40bdb59d3da52a539c21d6b8">VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE5_BIT</a> = 0x00000100
, <a class="el" href="#gga4f87c9100d154a65a4ad495f7763cf7ca4897d1181a186e327f4dadd680ad00ac">VMA_ALLOCATOR_CREATE_KHR_EXTERNAL_MEMORY_WIN32_BIT</a> = 0x00000200
, <a class="el" href="#gga4f87c9100d154a65a4ad495f7763cf7cae4d5ad929caba5f23eb502b13bd5286c">VMA_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM</a> = 0x7FFFFFFF
<br />
 }</td></tr>
<tr class="memdesc:ga4f87c9100d154a65a4ad495f7763cf7c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flags for created <a class="el" href="struct_vma_allocator.html" title="Represents main object of this library initialized.">VmaAllocator</a>.  <a href="#ga4f87c9100d154a65a4ad495f7763cf7c">More...</a><br /></td></tr>
<tr class="separator:ga4f87c9100d154a65a4ad495f7763cf7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga200692051ddb34240248234f5f4c17bb" id="r_ga200692051ddb34240248234f5f4c17bb"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga200692051ddb34240248234f5f4c17bb">vmaCreateAllocator</a> (const <a class="el" href="struct_vma_allocator_create_info.html">VmaAllocatorCreateInfo</a> *pCreateInfo, <a class="el" href="struct_vma_allocator.html">VmaAllocator</a> *pAllocator)</td></tr>
<tr class="memdesc:ga200692051ddb34240248234f5f4c17bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates <a class="el" href="struct_vma_allocator.html" title="Represents main object of this library initialized.">VmaAllocator</a> object.  <br /></td></tr>
<tr class="separator:ga200692051ddb34240248234f5f4c17bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa8d164061c88f22fb1fd3c8f3534bc1d" id="r_gaa8d164061c88f22fb1fd3c8f3534bc1d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaa8d164061c88f22fb1fd3c8f3534bc1d">vmaDestroyAllocator</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator)</td></tr>
<tr class="memdesc:gaa8d164061c88f22fb1fd3c8f3534bc1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys allocator object.  <br /></td></tr>
<tr class="separator:gaa8d164061c88f22fb1fd3c8f3534bc1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafa02231a791b37255720d566a52683e7" id="r_gafa02231a791b37255720d566a52683e7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gafa02231a791b37255720d566a52683e7">vmaGetAllocatorInfo</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_allocator_info.html">VmaAllocatorInfo</a> *pAllocatorInfo)</td></tr>
<tr class="memdesc:gafa02231a791b37255720d566a52683e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns information about existing <a class="el" href="struct_vma_allocator.html" title="Represents main object of this library initialized.">VmaAllocator</a> object - handle to Vulkan device etc.  <br /></td></tr>
<tr class="separator:gafa02231a791b37255720d566a52683e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaecabf7b6e91ea87d0316fa0a9e014fe0" id="r_gaecabf7b6e91ea87d0316fa0a9e014fe0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaecabf7b6e91ea87d0316fa0a9e014fe0">vmaGetPhysicalDeviceProperties</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, const VkPhysicalDeviceProperties **ppPhysicalDeviceProperties)</td></tr>
<tr class="separator:gaecabf7b6e91ea87d0316fa0a9e014fe0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab88db292a17974f911182543fda52d19" id="r_gab88db292a17974f911182543fda52d19"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gab88db292a17974f911182543fda52d19">vmaGetMemoryProperties</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, const VkPhysicalDeviceMemoryProperties **ppPhysicalDeviceMemoryProperties)</td></tr>
<tr class="separator:gab88db292a17974f911182543fda52d19"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8701444752eb5de4464adb5a2b514bca" id="r_ga8701444752eb5de4464adb5a2b514bca"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga8701444752eb5de4464adb5a2b514bca">vmaGetMemoryTypeProperties</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, uint32_t memoryTypeIndex, VkMemoryPropertyFlags *pFlags)</td></tr>
<tr class="memdesc:ga8701444752eb5de4464adb5a2b514bca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Given Memory Type Index, returns Property Flags of this memory type.  <br /></td></tr>
<tr class="separator:ga8701444752eb5de4464adb5a2b514bca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gade56bf8dc9f5a5eaddf5f119ed525236" id="r_gade56bf8dc9f5a5eaddf5f119ed525236"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gade56bf8dc9f5a5eaddf5f119ed525236">vmaSetCurrentFrameIndex</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, uint32_t frameIndex)</td></tr>
<tr class="memdesc:gade56bf8dc9f5a5eaddf5f119ed525236"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets index of the current frame.  <br /></td></tr>
<tr class="separator:gade56bf8dc9f5a5eaddf5f119ed525236"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>API elements related to the initialization and management of the entire library, especially <a class="el" href="struct_vma_allocator.html" title="Represents main object of this library initialized.">VmaAllocator</a> object. </p>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="ga7e1ed85f7799600b03ad51a77acc21f3" name="ga7e1ed85f7799600b03ad51a77acc21f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7e1ed85f7799600b03ad51a77acc21f3">&#9670;&#160;</a></span>PFN_vmaAllocateDeviceMemoryFunction</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void(VKAPI_PTR * PFN_vmaAllocateDeviceMemoryFunction) (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, uint32_t memoryType, VkDeviceMemory memory, VkDeviceSize size, void *pUserData)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Callback function called after successful vkAllocateMemory. </p>

</div>
</div>
<a id="ga154ccaaf53dc2c36378f80f0c4f3679b" name="ga154ccaaf53dc2c36378f80f0c4f3679b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga154ccaaf53dc2c36378f80f0c4f3679b">&#9670;&#160;</a></span>PFN_vmaFreeDeviceMemoryFunction</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void(VKAPI_PTR * PFN_vmaFreeDeviceMemoryFunction) (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, uint32_t memoryType, VkDeviceMemory memory, VkDeviceSize size, void *pUserData)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Callback function called before vkFreeMemory. </p>

</div>
</div>
<a id="gafd73b95e737ee7e76f827cb5472f559f" name="gafd73b95e737ee7e76f827cb5472f559f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafd73b95e737ee7e76f827cb5472f559f">&#9670;&#160;</a></span>VmaAllocatorCreateFlagBits</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef enum <a class="el" href="#ga4f87c9100d154a65a4ad495f7763cf7c">VmaAllocatorCreateFlagBits</a> <a class="el" href="#ga4f87c9100d154a65a4ad495f7763cf7c">VmaAllocatorCreateFlagBits</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Flags for created <a class="el" href="struct_vma_allocator.html" title="Represents main object of this library initialized.">VmaAllocator</a>. </p>

</div>
</div>
<a id="gacfe6863e160722c2c1bbcf7573fddc4d" name="gacfe6863e160722c2c1bbcf7573fddc4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacfe6863e160722c2c1bbcf7573fddc4d">&#9670;&#160;</a></span>VmaAllocatorCreateFlags</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef VkFlags <a class="el" href="#gacfe6863e160722c2c1bbcf7573fddc4d">VmaAllocatorCreateFlags</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>See <a class="el" href="#ga4f87c9100d154a65a4ad495f7763cf7c" title="Flags for created VmaAllocator.">VmaAllocatorCreateFlagBits</a>. </p>

</div>
</div>
<a id="gaad9652301d33759b83e52d4f3605a14a" name="gaad9652301d33759b83e52d4f3605a14a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaad9652301d33759b83e52d4f3605a14a">&#9670;&#160;</a></span>VmaAllocatorCreateInfo</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct VmaAllocatorCreateInfo VmaAllocatorCreateInfo</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Description of a Allocator to be created. </p>

</div>
</div>
<a id="ga1988031b0223fdbd564250fa1edd942c" name="ga1988031b0223fdbd564250fa1edd942c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1988031b0223fdbd564250fa1edd942c">&#9670;&#160;</a></span>VmaAllocatorInfo</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct VmaAllocatorInfo VmaAllocatorInfo</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Information about existing <a class="el" href="struct_vma_allocator.html" title="Represents main object of this library initialized.">VmaAllocator</a> object. </p>

</div>
</div>
<a id="ga77692d3c8770ea8882d573206bd27b2b" name="ga77692d3c8770ea8882d573206bd27b2b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga77692d3c8770ea8882d573206bd27b2b">&#9670;&#160;</a></span>VmaDeviceMemoryCallbacks</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct VmaDeviceMemoryCallbacks VmaDeviceMemoryCallbacks</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set of callbacks that the library will call for <code>vkAllocateMemory</code> and <code>vkFreeMemory</code>. </p>
<p>Provided for informative purpose, e.g. to gather statistics about number of allocations or total amount of memory allocated in Vulkan.</p>
<p>Used in <a class="el" href="struct_vma_allocator_create_info.html#af1380969b5e1ea4c3184a877892d260e" title="Informative callbacks for vkAllocateMemory, vkFreeMemory. Optional.">VmaAllocatorCreateInfo::pDeviceMemoryCallbacks</a>. </p>

</div>
</div>
<a id="gabb0a8e3b5040d847571cca6c7f9a8074" name="gabb0a8e3b5040d847571cca6c7f9a8074"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabb0a8e3b5040d847571cca6c7f9a8074">&#9670;&#160;</a></span>VmaVulkanFunctions</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct VmaVulkanFunctions VmaVulkanFunctions</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Pointers to some Vulkan functions - a subset used by the library. </p>
<p>Used in <a class="el" href="struct_vma_allocator_create_info.html#a3dc197be3227da7338b1643f70db36bd" title="Pointers to Vulkan functions. Can be null.">VmaAllocatorCreateInfo::pVulkanFunctions</a>. </p>

</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="ga4f87c9100d154a65a4ad495f7763cf7c" name="ga4f87c9100d154a65a4ad495f7763cf7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4f87c9100d154a65a4ad495f7763cf7c">&#9670;&#160;</a></span>VmaAllocatorCreateFlagBits</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="#ga4f87c9100d154a65a4ad495f7763cf7c">VmaAllocatorCreateFlagBits</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Flags for created <a class="el" href="struct_vma_allocator.html" title="Represents main object of this library initialized.">VmaAllocator</a>. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga4f87c9100d154a65a4ad495f7763cf7ca4816ddaed324ba110172ca608a20f29d" name="gga4f87c9100d154a65a4ad495f7763cf7ca4816ddaed324ba110172ca608a20f29d"></a>VMA_ALLOCATOR_CREATE_EXTERNALLY_SYNCHRONIZED_BIT&#160;</td><td class="fielddoc"><p>Allocator and all objects created from it will not be synchronized internally, so you must guarantee they are used from only one thread at a time or synchronized externally by you. </p>
<p>Using this flag may increase performance because internal mutexes are not used. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga4f87c9100d154a65a4ad495f7763cf7cace7da7cc6e71a625dfa763c55a597878" name="gga4f87c9100d154a65a4ad495f7763cf7cace7da7cc6e71a625dfa763c55a597878"></a>VMA_ALLOCATOR_CREATE_KHR_DEDICATED_ALLOCATION_BIT&#160;</td><td class="fielddoc"><p>Enables usage of VK_KHR_dedicated_allocation extension. </p>
<p>The flag works only if <a class="el" href="struct_vma_allocator_create_info.html#ae0ffc55139b54520a6bb704b29ffc285" title="Optional. Vulkan version that the application uses.">VmaAllocatorCreateInfo::vulkanApiVersion</a> <code>== VK_API_VERSION_1_0</code>. When it is <code>VK_API_VERSION_1_1</code>, the flag is ignored because the extension has been promoted to Vulkan 1.1.</p>
<p>Using this extension will automatically allocate dedicated blocks of memory for some buffers and images instead of suballocating place for them out of bigger memory blocks (as if you explicitly used <a class="el" href="group__group__alloc.html#ggad9889c10c798b040d59c92f257cae597a3fc311d855c2ff53f1090ef5c722b38f" title="Set this flag if the allocation should have its own memory block.">VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT</a> flag) when it is recommended by the driver. It may improve performance on some GPUs.</p>
<p>You may set this flag only if you found out that following device extensions are supported, you enabled them while creating Vulkan device passed as <a class="el" href="struct_vma_allocator_create_info.html#ad924ddd77b04039c88d0c09b0ffcd500" title="Vulkan device.">VmaAllocatorCreateInfo::device</a>, and you want them to be used internally by this library:</p>
<ul>
<li>VK_KHR_get_memory_requirements2 (device extension)</li>
<li>VK_KHR_dedicated_allocation (device extension)</li>
</ul>
<p>When this flag is set, you can experience following warnings reported by Vulkan validation layer. You can ignore them.</p>
<blockquote class="doxtable">
<p>&zwj;vkBindBufferMemory(): Binding memory to buffer 0x2d but vkGetBufferMemoryRequirements() has not been called on that buffer. </p>
</blockquote>
</td></tr>
<tr><td class="fieldname"><a id="gga4f87c9100d154a65a4ad495f7763cf7ca8fb75bf07cd184ab903596295e863dee" name="gga4f87c9100d154a65a4ad495f7763cf7ca8fb75bf07cd184ab903596295e863dee"></a>VMA_ALLOCATOR_CREATE_KHR_BIND_MEMORY2_BIT&#160;</td><td class="fielddoc"><p>Enables usage of VK_KHR_bind_memory2 extension.</p>
<p>The flag works only if <a class="el" href="struct_vma_allocator_create_info.html#ae0ffc55139b54520a6bb704b29ffc285" title="Optional. Vulkan version that the application uses.">VmaAllocatorCreateInfo::vulkanApiVersion</a> <code>== VK_API_VERSION_1_0</code>. When it is <code>VK_API_VERSION_1_1</code>, the flag is ignored because the extension has been promoted to Vulkan 1.1.</p>
<p>You may set this flag only if you found out that this device extension is supported, you enabled it while creating Vulkan device passed as <a class="el" href="struct_vma_allocator_create_info.html#ad924ddd77b04039c88d0c09b0ffcd500" title="Vulkan device.">VmaAllocatorCreateInfo::device</a>, and you want it to be used internally by this library.</p>
<p>The extension provides functions <code>vkBindBufferMemory2KHR</code> and <code>vkBindImageMemory2KHR</code>, which allow to pass a chain of <code>pNext</code> structures while binding. This flag is required if you use <code>pNext</code> parameter in <a class="el" href="group__group__alloc.html#ga861f4f27189a7d11ab9d9eedc825cb6b" title="Binds buffer to allocation with additional parameters.">vmaBindBufferMemory2()</a> or <a class="el" href="group__group__alloc.html#ga5f3502dd7d38b53fb1533ea3921d038d" title="Binds image to allocation with additional parameters.">vmaBindImageMemory2()</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga4f87c9100d154a65a4ad495f7763cf7ca4d4687863f7bd4b418c6006dc04400b0" name="gga4f87c9100d154a65a4ad495f7763cf7ca4d4687863f7bd4b418c6006dc04400b0"></a>VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT&#160;</td><td class="fielddoc"><p>Enables usage of VK_EXT_memory_budget extension.</p>
<p>You may set this flag only if you found out that this device extension is supported, you enabled it while creating Vulkan device passed as <a class="el" href="struct_vma_allocator_create_info.html#ad924ddd77b04039c88d0c09b0ffcd500" title="Vulkan device.">VmaAllocatorCreateInfo::device</a>, and you want it to be used internally by this library, along with another instance extension VK_KHR_get_physical_device_properties2, which is required by it (or Vulkan 1.1, where this extension is promoted).</p>
<p>The extension provides query for current memory usage and budget, which will probably be more accurate than an estimation used by the library otherwise. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga4f87c9100d154a65a4ad495f7763cf7ca2acce4886d8078552efa38878413970f" name="gga4f87c9100d154a65a4ad495f7763cf7ca2acce4886d8078552efa38878413970f"></a>VMA_ALLOCATOR_CREATE_AMD_DEVICE_COHERENT_MEMORY_BIT&#160;</td><td class="fielddoc"><p>Enables usage of VK_AMD_device_coherent_memory extension.</p>
<p>You may set this flag only if you:</p>
<ul>
<li>found out that this device extension is supported and enabled it while creating Vulkan device passed as <a class="el" href="struct_vma_allocator_create_info.html#ad924ddd77b04039c88d0c09b0ffcd500" title="Vulkan device.">VmaAllocatorCreateInfo::device</a>,</li>
<li>checked that <code>VkPhysicalDeviceCoherentMemoryFeaturesAMD::deviceCoherentMemory</code> is true and set it while creating the Vulkan device,</li>
<li>want it to be used internally by this library.</li>
</ul>
<p>The extension and accompanying device feature provide access to memory types with <code>VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD</code> and <code>VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD</code> flags. They are useful mostly for writing breadcrumb markers - a common method for debugging GPU crash/hang/TDR.</p>
<p>When the extension is not enabled, such memory types are still enumerated, but their usage is illegal. To protect from this error, if you don't create the allocator with this flag, it will refuse to allocate any memory or create a custom pool in such memory type, returning <code>VK_ERROR_FEATURE_NOT_PRESENT</code>. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga4f87c9100d154a65a4ad495f7763cf7ca5f1b28b0414319d1687e1f2b30ab0089" name="gga4f87c9100d154a65a4ad495f7763cf7ca5f1b28b0414319d1687e1f2b30ab0089"></a>VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT&#160;</td><td class="fielddoc"><p>Enables usage of "buffer device address" feature, which allows you to use function <code>vkGetBufferDeviceAddress*</code> to get raw GPU pointer to a buffer and pass it for usage inside a shader.</p>
<p>You may set this flag only if you:</p>
<ol type="1">
<li>(For Vulkan version &lt; 1.2) Found as available and enabled device extension VK_KHR_buffer_device_address. This extension is promoted to core Vulkan 1.2.</li>
<li>Found as available and enabled device feature <code>VkPhysicalDeviceBufferDeviceAddressFeatures::bufferDeviceAddress</code>.</li>
</ol>
<p>When this flag is set, you can create buffers with <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT</code> using VMA. The library automatically adds <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code> to allocated memory blocks wherever it might be needed.</p>
<p>For more information, see documentation chapter <a class="el" href="enabling_buffer_device_address.html">Enabling buffer device address</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga4f87c9100d154a65a4ad495f7763cf7caffdd7a5169be3dbd7cbf6b3619e4f78a" name="gga4f87c9100d154a65a4ad495f7763cf7caffdd7a5169be3dbd7cbf6b3619e4f78a"></a>VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT&#160;</td><td class="fielddoc"><p>Enables usage of VK_EXT_memory_priority extension in the library.</p>
<p>You may set this flag only if you found available and enabled this device extension, along with <code>VkPhysicalDeviceMemoryPriorityFeaturesEXT::memoryPriority == VK_TRUE</code>, while creating Vulkan device passed as <a class="el" href="struct_vma_allocator_create_info.html#ad924ddd77b04039c88d0c09b0ffcd500" title="Vulkan device.">VmaAllocatorCreateInfo::device</a>.</p>
<p>When this flag is used, <a class="el" href="struct_vma_allocation_create_info.html#a983d39e1a2e63649d78a960aa2fdd0f7" title="A floating-point value between 0 and 1, indicating the priority of the allocation relative to other m...">VmaAllocationCreateInfo::priority</a> and <a class="el" href="struct_vma_pool_create_info.html#a16e686c688f6725f119ebf6e24ab5274" title="A floating-point value between 0 and 1, indicating the priority of the allocations in this pool relat...">VmaPoolCreateInfo::priority</a> are used to set priorities of allocated Vulkan memory. Without it, these variables are ignored.</p>
<p>A priority must be a floating-point value between 0 and 1, indicating the priority of the allocation relative to other memory allocations. Larger values are higher priority. The granularity of the priorities is implementation-dependent. It is automatically passed to every call to <code>vkAllocateMemory</code> done by the library using structure <code>VkMemoryPriorityAllocateInfoEXT</code>. The value to be used for default priority is 0.5. For more details, see the documentation of the VK_EXT_memory_priority extension. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga4f87c9100d154a65a4ad495f7763cf7caa2566e7f75e19ae7ec9c4fa509fea5fb" name="gga4f87c9100d154a65a4ad495f7763cf7caa2566e7f75e19ae7ec9c4fa509fea5fb"></a>VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE4_BIT&#160;</td><td class="fielddoc"><p>Enables usage of VK_KHR_maintenance4 extension in the library.</p>
<p>You may set this flag only if you found available and enabled this device extension, while creating Vulkan device passed as <a class="el" href="struct_vma_allocator_create_info.html#ad924ddd77b04039c88d0c09b0ffcd500" title="Vulkan device.">VmaAllocatorCreateInfo::device</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga4f87c9100d154a65a4ad495f7763cf7caca82d4ce40bdb59d3da52a539c21d6b8" name="gga4f87c9100d154a65a4ad495f7763cf7caca82d4ce40bdb59d3da52a539c21d6b8"></a>VMA_ALLOCATOR_CREATE_KHR_MAINTENANCE5_BIT&#160;</td><td class="fielddoc"><p>Enables usage of VK_KHR_maintenance5 extension in the library.</p>
<p>You should set this flag if you found available and enabled this device extension, while creating Vulkan device passed as <a class="el" href="struct_vma_allocator_create_info.html#ad924ddd77b04039c88d0c09b0ffcd500" title="Vulkan device.">VmaAllocatorCreateInfo::device</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga4f87c9100d154a65a4ad495f7763cf7ca4897d1181a186e327f4dadd680ad00ac" name="gga4f87c9100d154a65a4ad495f7763cf7ca4897d1181a186e327f4dadd680ad00ac"></a>VMA_ALLOCATOR_CREATE_KHR_EXTERNAL_MEMORY_WIN32_BIT&#160;</td><td class="fielddoc"><p>Enables usage of VK_KHR_external_memory_win32 extension in the library.</p>
<p>You should set this flag if you found available and enabled this device extension, while creating Vulkan device passed as <a class="el" href="struct_vma_allocator_create_info.html#ad924ddd77b04039c88d0c09b0ffcd500" title="Vulkan device.">VmaAllocatorCreateInfo::device</a>. For more information, see <a class="el" href="vk_khr_external_memory_win32.html">VK_KHR_external_memory_win32</a>. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga4f87c9100d154a65a4ad495f7763cf7cae4d5ad929caba5f23eb502b13bd5286c" name="gga4f87c9100d154a65a4ad495f7763cf7cae4d5ad929caba5f23eb502b13bd5286c"></a>VMA_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM&#160;</td><td class="fielddoc"></td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga200692051ddb34240248234f5f4c17bb" name="ga200692051ddb34240248234f5f4c17bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga200692051ddb34240248234f5f4c17bb">&#9670;&#160;</a></span>vmaCreateAllocator()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">VkResult vmaCreateAllocator </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="struct_vma_allocator_create_info.html">VmaAllocatorCreateInfo</a> *</td>          <td class="paramname"><span class="paramname"><em>pCreateInfo</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a> *</td>          <td class="paramname"><span class="paramname"><em>pAllocator</em></span>&#160;)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Creates <a class="el" href="struct_vma_allocator.html" title="Represents main object of this library initialized.">VmaAllocator</a> object. </p>

</div>
</div>
<a id="gaa8d164061c88f22fb1fd3c8f3534bc1d" name="gaa8d164061c88f22fb1fd3c8f3534bc1d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa8d164061c88f22fb1fd3c8f3534bc1d">&#9670;&#160;</a></span>vmaDestroyAllocator()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vmaDestroyAllocator </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a></td>          <td class="paramname"><span class="paramname"><em>allocator</em></span></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Destroys allocator object. </p>

</div>
</div>
<a id="gafa02231a791b37255720d566a52683e7" name="gafa02231a791b37255720d566a52683e7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafa02231a791b37255720d566a52683e7">&#9670;&#160;</a></span>vmaGetAllocatorInfo()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vmaGetAllocatorInfo </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a></td>          <td class="paramname"><span class="paramname"><em>allocator</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_vma_allocator_info.html">VmaAllocatorInfo</a> *</td>          <td class="paramname"><span class="paramname"><em>pAllocatorInfo</em></span>&#160;)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns information about existing <a class="el" href="struct_vma_allocator.html" title="Represents main object of this library initialized.">VmaAllocator</a> object - handle to Vulkan device etc. </p>
<p>It might be useful if you want to keep just the <a class="el" href="struct_vma_allocator.html" title="Represents main object of this library initialized.">VmaAllocator</a> handle and fetch other required handles to <code>VkPhysicalDevice</code>, <code>VkDevice</code> etc. every time using this function. </p>

</div>
</div>
<a id="gab88db292a17974f911182543fda52d19" name="gab88db292a17974f911182543fda52d19"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab88db292a17974f911182543fda52d19">&#9670;&#160;</a></span>vmaGetMemoryProperties()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vmaGetMemoryProperties </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a></td>          <td class="paramname"><span class="paramname"><em>allocator</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const VkPhysicalDeviceMemoryProperties **</td>          <td class="paramname"><span class="paramname"><em>ppPhysicalDeviceMemoryProperties</em></span>&#160;)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>PhysicalDeviceMemoryProperties are fetched from physicalDevice by the allocator. You can access it here, without fetching it again on your own. </p>

</div>
</div>
<a id="ga8701444752eb5de4464adb5a2b514bca" name="ga8701444752eb5de4464adb5a2b514bca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8701444752eb5de4464adb5a2b514bca">&#9670;&#160;</a></span>vmaGetMemoryTypeProperties()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vmaGetMemoryTypeProperties </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a></td>          <td class="paramname"><span class="paramname"><em>allocator</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t</td>          <td class="paramname"><span class="paramname"><em>memoryTypeIndex</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">VkMemoryPropertyFlags *</td>          <td class="paramname"><span class="paramname"><em>pFlags</em></span>&#160;)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Given Memory Type Index, returns Property Flags of this memory type. </p>
<p>This is just a convenience function. Same information can be obtained using <a class="el" href="#gab88db292a17974f911182543fda52d19">vmaGetMemoryProperties()</a>. </p>

</div>
</div>
<a id="gaecabf7b6e91ea87d0316fa0a9e014fe0" name="gaecabf7b6e91ea87d0316fa0a9e014fe0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaecabf7b6e91ea87d0316fa0a9e014fe0">&#9670;&#160;</a></span>vmaGetPhysicalDeviceProperties()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vmaGetPhysicalDeviceProperties </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a></td>          <td class="paramname"><span class="paramname"><em>allocator</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const VkPhysicalDeviceProperties **</td>          <td class="paramname"><span class="paramname"><em>ppPhysicalDeviceProperties</em></span>&#160;)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>PhysicalDeviceProperties are fetched from physicalDevice by the allocator. You can access it here, without fetching it again on your own. </p>

</div>
</div>
<a id="gade56bf8dc9f5a5eaddf5f119ed525236" name="gade56bf8dc9f5a5eaddf5f119ed525236"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gade56bf8dc9f5a5eaddf5f119ed525236">&#9670;&#160;</a></span>vmaSetCurrentFrameIndex()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vmaSetCurrentFrameIndex </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a></td>          <td class="paramname"><span class="paramname"><em>allocator</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t</td>          <td class="paramname"><span class="paramname"><em>frameIndex</em></span>&#160;)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets index of the current frame. </p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.0
</small></address>
</div><!-- doc-content -->
</body>
</html>
